<template>
  <div>
    <slot></slot>
  </div>
</template>
<script>
import { getList } from "network/mock.js";

// 引入 echarts 核心模块，核心模块提供了 echarts 使用必须要的接口。
import * as echarts from "echarts/core";
// 引入柱状图图表，图表后缀都为 Chart
import { BarChart, LineChart } from "echarts/charts";
// 引入提示框，标题，直角坐标系组件，组件后缀都为 Component
import {
  TitleComponent,
  TooltipComponent,
  GridComponent,
  LegendComponent,
  ToolboxComponent,
} from "echarts/components";
// 引入 Canvas 渲染器，注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
import { CanvasRenderer } from "echarts/renderers";

// 注册必须的组件
echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  LegendComponent,
  ToolboxComponent,
  BarChart,
  LineChart,
  CanvasRenderer,
]);
export default {
  props: ["bar"],
  data() {
    return {
      chart: null,
      barC: null,
      jobChart: null,
    };
  },

  watch: {
    bar: function (newValue) {
      this.barC = newValue;
      newValue &&
        this.getBarChart(() => {
          this.init();
        });
    },
  },
  methods: {
    async getBarChart(callback) {
      let { list } = await getList();
      this.jobChart = list.find((r) => r.type === "Job");
      callback && callback();
    },
    init() {
      // 基于准备好的dom，初始化echarts实例
      var myChart = echarts.init(this.barC);
      // 声明颜色数组
      var myColor = ["#1089E7", "#F57474", "#56D0E3", "#F8B448", "#8B78F6"];
      myChart.setOption({
        grid: {
          left: "22%",
          top: "10%",
          bottom: "10%",
          containLabel: false, //false到刻度的距离
        },
        xAxis: {
          // 不显示x轴
          show: false,
        },
        yAxis: [
          {
            type: "category",
            data: ["HTML5", "CSS3", "javascript", "VUE", "NODE"],
            inverse: true,
            axisLine: {
              show: false,
            },
            // 不显示刻度
            axisTick: {
              show: false,
            },
            axisLabel: {
              color: "rgba(255,255,255,.6)",
              fontSize: "12",
            },
          },
          {
            type: "category",
            data: [702, 350, 610, 793, 664],
            inverse: true,
            axisLine: {
              show: false,
            },
            // 不显示刻度
            axisTick: {
              show: false,
            },
            axisLable: {
              textStyle: {
                fontSize: 12,
                color: "#fff",
              },
            },
          },
        ],
        series: [
          {
            name: "条",
            type: "bar",
            data: [70, 34, 60, 78, 69],
            yAxisIndex: 0,
            itemStyle: {
              // 可以在这里面修改颜色  写了一个函数的方式
              color(params) {
                // params 里面的索引号dataIndex 对应mycolord的索引
                return myColor[params.dataIndex];
              },
              borderRadius: 5,
            },
            // 柱子之间的距离
            barCategoryGap: 50,
            //柱子的宽度
            barWidth: 10,
            // 在柱子里面显示数据
            label: {
              show: true,
              position: "inside",
              // 会自动解析data里面的数据
              formatter: "{c}%",
            },
          },
          {
            name: "框",
            type: "bar",
            data: [100, 100, 100, 100, 100],
            // 相当于z-index 是否重叠
            yAxisIndex: 1,
            barWidth: 14,
            itemStyle: {
              // 可以在这里面修改颜色  写了一个函数的方式
              color: "none",
              borderColor: "#00c1de",
              borderWidth: 2,
              barBorderRadius: 15,
            },
          },
        ],
      });
      // 设置图表的自动适应
      window.addEventListener("resize", function () {
        myChart.resize();
      });
    },
  },
};
</script>
<style scoped lang="scss"></style>
